package com.android.love.net;

import java.util.Map;

import android.content.Context;

import com.android.love.parser.BaseParser;
import com.android.love.util.Constant;
import com.android.love.util.LogUtil;

/**
 * 具体联网方法功能
 * 
 * @author adison
 * 
 */
public class DataHandler {

	private static final String TAG = "DataHandler";
	private HttpAgent agent;
//	private MyHandler handler;

	public DataHandler(Context context) {
		super();
		this.agent = HttpAgent.getInstance();
//		this.handler = handler;
	}

	/**
	 * 获取对象数据
	 * 
	 * @param url
	 * @param pramers
	 * @param values
	 * @param obj
	 * @param parser
	 * @return
	 */
	public Object getData(String url, Map<String, String> params, Object obj,
			BaseParser parser, boolean get) {

		try {
			String[] response;
			if (get) {
				response = agent.doGet(url, params);
			} else {
//				response = agent.doPost(url, params);
				response = agent.requestByPost(url, params,0);
			}
			LogUtil.i(TAG, "response--" + response[0] + "----" + response[1]);
			if (response != null && checkNetworkStatus(response[0])) {
				String jsonStr = response[1];
				LogUtil.i(TAG, "response--" + jsonStr);
				if (null == jsonStr)
					return null;
				obj = parser.parserJson(jsonStr);
				return obj;
			} else {
				if (get) {
					response = agent.doGet(url, params);
				} else {
//					response = agent.doPost(url, params);
					response = agent.requestByPost(url, params,1);
				}
				if (response != null && checkNetworkStatus(response[0])) {
					String jsonStr = response[1];
					if (null == jsonStr)
						return null;
					obj = parser.parserJson(jsonStr);
					return obj;
				}
				// else {
				// // if (checkNoFound(response[0])) {
				// // // return response[0];
				// // Message msg = new Message();
				// // msg.what = Constants.GET_DATA_FAIL;
				// // handler.sendMessage(msg);
				// // }
				// }
			}
		} catch (Exception e) {
			LogUtil.i(TAG, "Exception--"+e.getMessage());
			e.printStackTrace();
		}

		return null;
	}

	/**
	 * 判断返回状态码是否是200
	 * 
	 * @param response
	 * @return
	 */
	private boolean checkNetworkStatus(String status) {
		if (Constant.CODE_HTTP_SUCCEED.equals(status)) {
			return true;
		}
		return false;
	}

	/**
	 * 判断返回状态码是否是404
	 * 
	 * @param response
	 * @return
	 */
	private boolean checkNoFound(String status) {
		if (Constant.CODE_HTTP_NOT_FOUND.equals(status)) {
			return true;
		}
		return false;
	}

	// /**
	// * 获取错误信息
	// *
	// * @param conn
	// * @param errMsg
	// * @return
	// */
	// private String getResposeMsg(HttpURLConnection conn, String errMsg) {
	// if (conn != null) {
	// try {
	// int responseCode = conn.getResponseCode();
	// // MyLog.e( TAG, "==========================" );
	// // MyLog.e( TAG, "responseCode=" + responseCode + "   " +
	// // conn.getResponseMessage( ) );
	// // MyLog.e( TAG, "==========================" );
	// if (responseCode >= 500) {
	// String msg = "服务器大姨妈，请稍后刷新再试";
	// switch (responseCode) {
	// // case 502:// Bad Gateway
	// // msg="服务器正在维护，请稍后再试";
	// // break;
	// case 503:// Service Unavailable
	// case 504:// Gateway Timeout
	// msg = "连接服务器超时，服务器可能在维护";
	// default:
	// break;
	// }
	// return "{\"err_msg\":\"" + msg + "\",\"op_status\":\"NG\"}";
	// }
	//
	// } catch (IOException e) {
	// e.printStackTrace();
	// }
	// }
	// return null;
	// }
	//

}
